/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package simulador;

import java.text.DecimalFormat;
import java.util.LinkedList;


/**
 *
 * @author Fede
 */
public class GeneradorLlegadasCheques {
    
     private LinkedList listaCheque;//colaDeLlegadaDeCheques
     
     private int procesamientoChequePorHora;
     
     public GeneradorLlegadasCheques(int procChequesXHora)
     {
         listaCheque= new LinkedList();
         this.procesamientoChequePorHora=procChequesXHora;
     }
    
    
    public LinkedList generarListadoCheques( float hora) {
        
        float cantidadChequesTotales= this.procesamientoChequePorHora*hora*(float)1.5;
        double proxLlegada=0;
        for(int i=1;i<cantidadChequesTotales+1;i++)
        {
            
            double random= Math.random();
            double tiempoEntreLegadas = this.tiempoEntreLlegadas(random);
            proxLlegada=proxLlegada+tiempoEntreLegadas;
            
            Cheque c= new Cheque(i,this.redondearADosDecimales(random),tiempoEntreLegadas,proxLlegada);
            this.listaCheque.add(c);
        }
         
         return this.listaCheque;
    }
    
    
    private double tiempoEntreLlegadas(double random)
    {
        double media=3600/(float)procesamientoChequePorHora;
        double tiempo=-media*Math.log(1-random);
        return this.redondearADosDecimales(tiempo);
    }
    
    private double redondearADosDecimales(double rnd)
    {
        DecimalFormat twoDForm = new DecimalFormat("#.###");
         return Double.valueOf(twoDForm.format(rnd).replace(',','.'));
    }  
 }